package struts.ext.commons.lang.collection;

import java.util.List;

/**
 * 提供对某个List的链式操作如：
 * <pre>
 *  Lister.get(arys).removeIfEmpty().toArray();
 * </pre>
 */
public class Lister<T> {
	private List<T> l;
	
	private Lister(List<T> l) {
		this.l = l;
	}
	
	public List<T> getList(){return l;}
	
	public static <T>Lister<T> get(List<T> l) {
		return new Lister<T>(l);
	}
	
	public static <T> Lister<T> get(T...objs){
		return get(Collections.list(objs));
	}
	
	public Lister<T> removeIfEmpty() {
		l = Collections.removeIfEmpty(l);
		return this;
	}
	
	public Lister<T> remove(int index) {
		l.remove(index);
		return this;
	}
	
	public Lister<T> merge(List<T>...lists){
		for (List<T> l:lists) {
			this.l.addAll(l);
		}
		return this;
	}
	
	public  T[] toArray() {
		return Lists.toArray(l);
	}
}
